"""
类属性：
直接定义在类里面的属性叫做类属性
一般情况下，我们定义这个类的公共属性
调用：
    类内：
    类外：
    类名.类属性(推荐)
    对象名.类属性
类方法：
    @classmethod(装饰器)---->注解
    1.被@classmethod所修饰的方法是类方法
    2.第一个参数是cls     cls指向类
    调用：
        类内：
            通过cls来调用类属性或者类方法
        类外：
            类名.类属性(推荐)
            对象名.类属性
成员方法可以调用成员属性/方法,类属性/类方法  self
只要通过对象名调用的属性或者方法，我们的成员方法都可以调用。
类方法只能调用类方法，类属性，静态方法 不能调用成员属性，成员方法
"""

"""
类方法用cls 静态啥也没
类方法用classmethod，静态用staicmethod
类方法只能调用类方法，类属性，静态方法 不能调用成员属性，成员方法
"""
class Dog:
    name="小白"  #类属性
#类方法:

    @classmethod
    def sleep(cls):
        print(cls.name)
        cls.eat()
    @classmethod
    def eat(cls):
       pass
# 第一种方式：通过对象名.类属性来调用
# d1=Dog()
# print(d1.name)
# # 第二种方式：通过类名.类属性
# print(Dog.name)
# 直接通过类名.类方法
print(Dog.sleep())


# 水平越权与垂直越权